#ifndef _DIBUJADOR_H__
#define _DIBUJADOR_H__

#include <iostream>
#include "string"
#include "Lista.h"
#include "Escenario.h"
#include "StringUtils.h"
#include <sdl.h>
#include "Imagen.h"
#include "Logger.h"
#include "MapaDeCeldas.h"
#include "Pacman.h"
#include "Posicionable.h"
#include "Fantasma.h"
#include "Jugador.h"



class Dibujador {

private:

	Logger* logger;
	Escenario* escenario;
	SDL_Surface* ventana;
	Imagen* fondo;
	Textura* texPacman;
	Textura* texComida;
	Textura* texFantasma;
	int anchoGrilla;
	int altoGrilla;
	int anchoDeCelda;
	int altoDeCelda;
	int resolucionW;
	int resolucionH;
	Imagen** mapaDeImagenesCamino;
	Imagen** mapaDeImagenesCaminoConBonus;
	float pasoX;
	float pasoY;

public:
	
	Dibujador(Escenario* e);
	~Dibujador(void);
	void Flip();
	void dibujarEscenario();
	void dibujarPacman(Pacman* p, MapaDeCeldas *m,string tipo);
	void dibujarFantasma(Fantasma* p, MapaDeCeldas *m, string tipo);
	void dibujarBonus(Bonus*,MapaDeCeldas *m,int, int);
	void eliminarBonusDeImagen(int columna, int fila, MapaDeCeldas* mapa);
	void dibujarInformacion(Jugador*, Jugador*, int tiempoTranscurrido);
	void dibujarGameOver(string nombreGanador);

private:

	Imagen* getImagenCamino(int fila, int columna);
	Imagen* getImagenBonus(int columna, int fila, MapaDeCeldas* mapa);
	Imagen* getImagenCaminoConBonus(int columna, int fila);
	void inicializarMapasDeImagenes();
	void inicializarMapaImagenesCamino(MapaDeCeldas* mapa);
	void inicializarMapaImagenesCaminoConBonus(MapaDeCeldas* mapa);
	void inicializarImagenesObstaculos();
	void dibujarCargando();

};
#endif